package cn.edu.jnu.entity;

import cn.edu.jnu.GameWin;
import cn.edu.jnu.utils.GameUtils;

import java.awt.*;

/**
 * 功能：敌机对象
 * 作者：陈爱国
 * 日期：2024/8/12 17:28
 */
public class EnemyObj extends GameObj{
    public EnemyObj() {
        super();
    }

    public EnemyObj(Image img, int x, int y, int width, int height, double speed, GameWin frame) {
        super(img, x, y, width, height, speed, frame);
    }

    @Override
    public void paintSelf(Graphics gImage) {
        super.paintSelf(gImage);

        // 更新对象y坐标
        y+=speed;

        // 我方飞机与敌机碰撞检测
        if(this.getRect().intersects(this.frame.planeObj.getRect())){
            // 修改游戏状态
            this.frame.state = 3;
        }

        // 进行敌机和子弹的碰撞检测
        for (ShellObj shellObj: GameUtils.shellObjList) {
            if(this.getRect().intersects(shellObj.getRect())){
                // 碰撞了产生爆炸对象，并添加到爆炸对象列表中
                ExplodeObj explodeObj = new ExplodeObj(x,y);
                GameUtils.explodeObjList.add(explodeObj);

                // 同时添加到删除对象中
                GameUtils.removeObjList.add(explodeObj);

                // System.out.println("碰撞了");
                // 敌机和子弹碰撞后，然敌机和子弹消失，并加入到待删除游戏对象列表中
                // 通过修改敌机和子弹的坐标让其消失
                shellObj.setX(-100);
                shellObj.setY(100);
                this.x = -200;
                this.y = 200;

                // 将敌机和子弹添加到待删除游戏对象列表中
                GameUtils.removeObjList.add(shellObj);
                GameUtils.removeObjList.add(this);

                // 敌机和我方子弹碰撞，这计分加1
                GameWin.score++;
            }
        }
    }

    @Override
    public Rectangle getRect() {
        return super.getRect();
    }
}
